package screens;

import java.util.Vector;

import log.Logger;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.component.SeparatorField;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.Background;
import net.rim.device.api.ui.decor.BackgroundFactory;
import strings.WebcampusResource;
import util.LookAndFeel;
import beans.Course;
import beans.Instance;
import customfields.CourseField;

public class CoursesScreen extends TransitionScreen implements WebcampusResource{

	// RESOURCES
	//private static ResourceBundle resources = ResourceBundle.getBundle(BUNDLE_ID, BUNDLE_NAME);

	private Vector courses;

	private int contentHeight=0;

	public CoursesScreen(Instance instance, int transitionType) {
		super(transitionType);

		Logger.log("creating courses screen");

		this.courses=instance.getCourses();

		VerticalFieldManager vfm;
		if (this.courses.size()<=5){
			// Main vertical field manager
			vfm = new VerticalFieldManager() {
				protected void sublayout( int maxWidth, int maxHeight )
				{
					//set width
					int displayWidth = Display.getWidth();
					//set height
					int displayHeight = Display.getHeight();
					super.sublayout( displayWidth, displayHeight);
					setExtent( displayWidth, displayHeight);
					System.out.println(displayHeight + "" +displayWidth);
				}
			};
		} else {
			vfm = new VerticalFieldManager();
		}
		Bitmap background_bitmap = Bitmap.getBitmapResource(LookAndFeel.background_img);
		Bitmap background_bitmap_resized = new Bitmap(Display.getWidth(), background_bitmap.getHeight());
		background_bitmap.scaleInto(background_bitmap_resized, Bitmap.FILTER_LANCZOS | Bitmap.SCALE_TO_FILL);
		Background background = BackgroundFactory.createBitmapBackground(background_bitmap_resized);
		vfm.setBackground(background);

		// Header
		Bitmap header_img = Bitmap.getBitmapResource(LookAndFeel.header_img);
		Bitmap header_img_resized = new Bitmap(Display.getWidth(), (int) (Display.getHeight()*0.25));
		header_img.scaleInto(header_img_resized, Bitmap.FILTER_LANCZOS, Bitmap.SCALE_TO_FILL);
		BitmapField header = new BitmapField(header_img_resized,Field.FIELD_HCENTER);
		vfm.add(header);

		contentHeight+=header.getPreferredHeight();

		// Separator
		vfm.add(new SeparatorField());
		vfm.add(new LabelField(""));

		// Add instances
		CourseField coursefield=null;
		Background courseBackground=null;
		for (int i=0; i<this.courses.size(); i++){
			Course cour = (Course) this.courses.elementAt(i);
			coursefield = new CourseField(cour.getName(), Field.FIELD_HCENTER | Field.FOCUSABLE);
			courseBackground = BackgroundFactory.createLinearGradientBackground(LookAndFeel.button_upper_color,
					LookAndFeel.button_upper_color, LookAndFeel.button_lower_color, LookAndFeel.button_lower_color);
			//instanceBackground = BackgroundFactory.createSolidTransparentBackground(Color.WHITE, 50);
			coursefield.setBackground(courseBackground);
			coursefield.setCookie(cour);
			coursefield.setChangeListener(courseListener);
			vfm.add(coursefield);
			contentHeight+=coursefield.getPreferredHeight();
		}
		add(vfm);
	}

	private FieldChangeListener courseListener = new FieldChangeListener() {
		public void fieldChanged(Field field, int context) {
			Controller.getInstance().openGradesListScreen((Course) field.getCookie());
		}
	};
}
